package com.ruben.command.restaurant;

import java.util.Arrays;
import java.util.List;

/**
 * 在市中心逛了很久的街后， 你找到了一家不错的餐厅， 坐在了临窗的座位上。
 * 一名友善的服务员走近你， 迅速记下你点的食物， 写在一张纸上。
 * 服务员来到厨房， 把订单贴在墙上。
 * 过了一段时间， 厨师拿到了订单， 他根据订单来准备食物。
 * 厨师将做好的食物和订单一起放在托盘上。
 * 服务员看到托盘后对订单进行检查， 确保所有食物都是你要的， 然后将食物放到了你的桌上。
 *
 * @author <achao1441470436@gmail.com>
 * @since 2021/12/5 0005 16:09
 */
public class RestaurantApplication {

    public static void main(String[] args) throws InterruptedException {
//        useCommandMode();
        withoutCommandMode();
    }

    private static void withoutCommandMode() throws InterruptedException {
        // 在市中心逛了很久的街后， 你找到了一家不错的餐厅， 坐在了临窗的座位上。
        // 一名友善的服务员走近你， 迅速记下你点的食物， 写在一张纸上。
        List<String> order = Arrays.asList("牛排", "意面", "芭菲", "拉菲");
        // 服务员来到厨房， 把订单贴在墙上。
        System.out.println("处理订单");
        System.out.println(order);
        // 过了一段时间， 厨师拿到了订单， 他根据订单来准备食物。
        Thread.sleep(1000);
        // 厨师将做好的食物和订单一起放在托盘上。
        // 服务员看到托盘后对订单进行检查， 确保所有食物都是你要的， 然后将食物放到了你的桌上。
        System.out.println("检查清单");
        System.out.println(order);
    }

    private static void useCommandMode() throws InterruptedException {
        // 在市中心逛了很久的街后， 你找到了一家不错的餐厅， 坐在了临窗的座位上。
        // 一名友善的服务员走近你， 迅速记下你点的食物， 写在一张纸上。
        Waiter waiter = new Waiter(Arrays.asList("牛排", "意面", "芭菲", "拉菲"));
        BasePaper paper = new PrepareBasePaper(waiter);
        // 服务员来到厨房， 把订单贴在墙上。
        paper.execute();
        // 过了一段时间， 厨师拿到了订单， 他根据订单来准备食物。
        Thread.sleep(1000);
        // 厨师将做好的食物和订单一起放在托盘上。
        // 服务员看到托盘后对订单进行检查， 确保所有食物都是你要的， 然后将食物放到了你的桌上。
        paper = new ProcessorBasePaper(waiter);
        paper.execute();
    }

}
